Integrated circuits or “chips” are ubiquitous in the modern electronic systems with which people interact on a daily basis. These chips are designed to perform a wide variety of functions in the electronic systems, and enable those systems to perform their functions effectively and efficiently. The chips are based on highly complex circuit designs, system architectures and implementations, and are integral to the electronic systems. The chips implement functions such as communications, processing, and networking, whether the electronic systems are applied to business, entertainment, or consumer electronics purposes. The electronic systems routinely contain more than one chip. The chips implement critical functions including computation, storage, and control. The chips support the electronic systems by computing algorithms and heuristics, handling and processing data, communicating internally and externally to the electronic system, and so on. Since there are numerous computations that must be performed, any improvements in the efficiency of the computations add up to form a significant and substantial impact on overall system performance. As the amount of data to be handled increases, the approaches that are used must not only be effective, efficient, and economical, but must also scale as the amount of data increases.
Single processor architectures are well-suited for some tasks, but are unable to provide the level of performance required by some high-performance systems. Parallel processing based on general-purpose processors can attain an increased level of performance. Thus, using systems with multiple processing elements is one approach for achieving increased performance. There is a wide variety of applications that demand a high level of performance. Such applications can include networking, image processing, simulations, and signal processing, to name a few. In addition to computing power, flexibility is also important for adapting to ever-changing business needs and technical situations.
The nature of some applications demands reconfigurability. Reconfigurability is an important attribute in many processing applications, as reconfigurable devices are extremely efficient for certain types of processing tasks. In certain circumstances, the main reason why cost and performance advantages of reconfigurable devices exist is that reconfigurable logic enables program parallelism, allowing for multiple computation operations to occur simultaneously for the same program. Meanwhile, conventional processors are often limited by instruction bandwidth and execution restrictions. Typically, the high-density properties of reconfigurable devices come at the expense of the high-diversity property that is inherent in microprocessors. Microprocessors have evolved to a highly-optimized configuration that can provide cost/performance advantages over reconfigurable arrays for certain tasks with high functional diversity. However, there are many tasks for which a conventional microprocessor may not be the best design choice. An architecture supporting configurable interconnected processing elements can be a viable alternative in many data intensive applications, especially for moving and processing incredibly large amounts of data. Data-driven applications demand a whole new architecture of computing structures to meet the throughput and processing needs contained therein.
The emergence of reconfigurable computing has enabled a higher level of both flexibility and performance in computer systems. Reconfigurable computing combines the high speed of application-specific integrated circuits (ASIC) with the flexibility of programmable processors. This provides much-needed functionality and power to enable the technology used in many current and upcoming fields.